import com.wyix.error.CoffeeBeanNotFoundException;
import com.wyix.entity.CoffeeMachine;
import com.wyix.error.MilkNotFoundException;

/**
 * @author wangdx
 * @since 2025/8/1
 */
public class TryCatchFinallyDemo {
    public static void serveCustomer(String coffeeType) {
        CoffeeMachine machine = null;
        try {
            // try：尝试制作咖啡（核心操作）
            machine = new CoffeeMachine();
            machine.makeCoffee(coffeeType); // 可能抛出"原料不足"异常
        } catch (MilkNotFoundException e) {
            // catch：处理特定异常（牛奶不足→推荐美式）
            System.out.println("处理方案：" + e.getMessage() + "，推荐美式咖啡");
        } catch (CoffeeBeanNotFoundException e) {
            // 处理另一种异常（咖啡豆不足→推荐茶）
            System.out.println("处理方案：" + e.getMessage() + "，推荐伯爵茶");
        } finally {
            // finally：必须执行的收尾工作（清理机器）
            if (machine != null) {
                machine.clean(); // 无论是否成功，都清理咖啡机
            }
            System.out.println("顾客服务结束，感谢光临");
        }
    }

    public static void main(String[] args) {
        // 智能咖啡机（自动关闭资源）
        try (CoffeeMachine machine = new CoffeeMachine()) { // 实现AutoCloseable接口
            machine.makeCoffee("拿铁");
        } catch (Exception e) {
            System.out.println("制作失败：" + e.getMessage());
        }
// 无需手动调用machine.clean()，try-with-resources自动执行
    }
}